/***************************************************************************************************
                                项目                :       GimKeyboard
                                处理器				:       ESP32-S3
                                开发环境			:       pio(Arduino)
                                文件				:       ble_hid_server.h
                                说明				:       ble设备服务头文件（依赖第三方库）
                                作者				:       金欣嵘
====================================================================================================

====================================================================================================
                                               修改记录 
====================================================================================================
----------------------------------------------------------------------------------------------------
                                               2024.02.05
----------------------------------------------------------------------------------------------------
                            修改人                  :            金欣嵘
                            修改记录                :            创建文件 
----------------------------------------------------------------------------------------------------
***************************************************************************************************/
#ifndef __BLE_HID_SERVER_H__
#define __BLE_HID_SERVER_H__

#include <FreeRTOS.h>
#include <task.h>
#include <semphr.h>
#include <timers.h>
#include <BleKeyboard.h>

#define BLE_HID_SERVER_DEBUG        0                                           //是否打印调试信息

#define BLE_HID_SERVER_STACK_SIZE   4096                                        //任务堆栈大小
#define BLE_HID_SERVER_TASK_PRIO    5                                           //任务优先级

#define BLE_CONNECTED_LED_PIN       8                                           //BLE状态灯

class BleHidServer
{
    public:
        static void init(void);

    private:
        static BleKeyboard bleKeyboard;
        static TaskHandle_t ble_hid_server_task_handler;
        static void ble_led_on(void);
        static void ble_led_off(void);
        static void tirgger_fn_func(void);
        static void send_trigger_key(uint8_t * trigger_matrix);
        static void start_ble_hid_server_task(void *pvParameters);
        static uint8_t map_trigger_and_hid_type(uint8_t trigger_id);
};

extern BleHidServer ble_hid_server;

#endif
